//
// Created by zx208 on 2024/10/16.
//

#include "../SequenceList.h"

//一个线性表中的元素全部为正或负整数，
// 试设计一算法，在尽可能少的时间内重排该表，
// 将正、负整数分开，使线性表中所有负整数在正整数前面。

Status Resort_SL(SqList *L){
    int left = 0, right = L->length - 1, temp;
    // 左右指针法
    // 左边找到>0的数 和 右边找到=<0的数 来进行交换(这样能增快效率)
    while(left < right){
        while(L->elem[left] < 0 && left < right) left++;
        while(L->elem[right] >= 0 && left < right) right--;
        temp = L->elem[left], L->elem[left] = L->elem[right], L->elem[right] = temp;
    }
    return OK;
}

int main(void){
    SqList L;
    int a[] = {1, 0, -1, 0};
    L.elem = a;
    L.length = sizeof a / sizeof( int);
    Resort_SL(&L);
    for (int i = 0; i < L.length; ++i) {
        printf("%d ", L.elem[i]);
    }
    return 0;
}